#ifndef __UART_H
#define __UART_H
#include "matrix.h"

#define PL011_UARTFR_TXFF_BIT       5
#define PL011_UART0_BASE            0x09000000
#define PL011_UART0_SIZE            0x00001000
#define PL011_UARTDR                (PL011_UART0_BASE + 0x000)
#define PL011_UARTFR                (PL011_UART0_BASE + 0x018)
#define PL011_UARTCR                (PL011_UART0_BASE + 0x030)
#define PL011_UARTIMSC              (PL011_UART0_BASE + 0x038)
#define PL011_UARTRIS               (PL011_UART0_BASE + 0x03C)
#define PL011_UARTICR               (PL011_UART0_BASE + 0x044)
#define PL011_UART0_IRQNUM          33

#define UARTFR_RXFE     0x10
#define UARTFR_TXFF     0x20
#define UARTIMSC_RXIM   0x10
#define UARTIMSC_TXIM   0x20
#define UARTICR_RXIC    0x10
#define UARTICR_TXIC    0x20

void put_string(char* str);
void put_char(char c);
mx_int16_t get_char (void);

#endif
